package it.canraid.leaflet.control;

import it.canraid.leaflet.R;
import it.canraid.leaflet.control.activity.DrawActivity;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.Toast;

public class TouchCutterListener implements OnTouchListener {
    private DrawActivity context = null;

    public TouchCutterListener(DrawActivity context) {
	this.context = context;

	Kernel.R().setClickStatus(context.cutterButton[0], 0);
	Kernel.R().setClickStatus(context.cutterButton[1], 0);
	Kernel.R().setClickStatus(context.cutterButton[2], 0);
	Kernel.R().setClickStatus(context.cutterButton[3], 0);
	Kernel.R().setClickStatus(context.cutterButton[4], 0);
	Kernel.R().setClickStatus(context.cutterButton[5], 0);
    }

    public boolean onTouch(View v, MotionEvent event) {
	switch (event.getAction()) {

	case MotionEvent.ACTION_DOWN:
	case MotionEvent.ACTION_MOVE:
	    int block = v.getWidth() / 6;
	    if (event.getX() < block) {
		context.cutterButton[0].setBackgroundResource(R.drawable.cutting);
		Kernel.R().setClickStatus(context.cutterButton[0], 1);
		for (int y = 1; y < context.cutterButton.length; y++) {
		    if (Kernel.R().getClickStatus(context.cutterButton[y]) != 0) {
			context.cutterButton[y].setBackgroundResource(R.drawable.cutter_line);
			Kernel.R().setClickStatus(context.cutterButton[y], 0);
		    }
		}
	    } else if (event.getX() >= block && event.getX() < 2 * block && Kernel.R().getClickStatus(context.cutterButton[0]) == 1) {
		context.cutterButton[1].setBackgroundResource(R.drawable.cutting);
		Kernel.R().setClickStatus(context.cutterButton[1], 1);
		context.cutterButton[0].setBackgroundResource(R.drawable.cutted);
		for (int y = 2; y < context.cutterButton.length; y++) {
		    if (Kernel.R().getClickStatus(context.cutterButton[y]) != 0) {
			context.cutterButton[y].setBackgroundResource(R.drawable.cutter_line);
			Kernel.R().setClickStatus(context.cutterButton[y], 0);
		    }
		}
	    } else if (event.getX() >= 2 * block && event.getX() < 3 * block && Kernel.R().getClickStatus(context.cutterButton[1]) == 1) {
		context.cutterButton[2].setBackgroundResource(R.drawable.cutting);
		Kernel.R().setClickStatus(context.cutterButton[2], 1);
		context.cutterButton[1].setBackgroundResource(R.drawable.cutted);
		for (int y = 3; y < context.cutterButton.length; y++) {
		    if (Kernel.R().getClickStatus(context.cutterButton[y]) != 0) {
			context.cutterButton[y].setBackgroundResource(R.drawable.cutter_line);
			Kernel.R().setClickStatus(context.cutterButton[y], 0);
		    }
		}
	    } else if (event.getX() >= 3 * block && event.getX() < 4 * block && Kernel.R().getClickStatus(context.cutterButton[2]) == 1) {
		context.cutterButton[3].setBackgroundResource(R.drawable.cutting);
		Kernel.R().setClickStatus(context.cutterButton[3], 1);
		context.cutterButton[2].setBackgroundResource(R.drawable.cutted);
		for (int y = 4; y < context.cutterButton.length; y++) {
		    if (Kernel.R().getClickStatus(context.cutterButton[y]) != 0) {
			context.cutterButton[y].setBackgroundResource(R.drawable.cutter_line);
			Kernel.R().setClickStatus(context.cutterButton[y], 0);
		    }
		}
	    } else if (event.getX() >= 4 * block && event.getX() < 5 * block && Kernel.R().getClickStatus(context.cutterButton[3]) == 1) {
		context.cutterButton[4].setBackgroundResource(R.drawable.cutting);
		Kernel.R().setClickStatus(context.cutterButton[4], 1);
		context.cutterButton[3].setBackgroundResource(R.drawable.cutted);
		if (Kernel.R().getClickStatus(context.cutterButton[5]) != 0) {
		    context.cutterButton[5].setBackgroundResource(R.drawable.cutter_line);
		    Kernel.R().setClickStatus(context.cutterButton[5], 0);
		}
	    } else if (event.getX() >= 5 * block && Kernel.R().getClickStatus(context.cutterButton[4]) == 1) {
		context.cutterButton[5].setBackgroundResource(R.drawable.cutting);
		Kernel.R().setClickStatus(context.cutterButton[5], 1);
		context.cutterButton[4].setBackgroundResource(R.drawable.cutted);
	    }
	    break;
	case MotionEvent.ACTION_UP:
	    if (Kernel.R().getClickStatus(context.cutterButton[5]) == 1) {
		Toast.makeText(context, "OK, Sent!", Toast.LENGTH_LONG).show();
		context.cutterButton[5].setBackgroundResource(R.drawable.cutted);
	    } else {
		context.cutterButton[0].setBackgroundResource(R.drawable.cutter_2);
		Kernel.R().setClickStatus(context.cutterButton[0], 0);
		context.cutterButton[1].setBackgroundResource(R.drawable.cutter_line);
		Kernel.R().setClickStatus(context.cutterButton[1], 0);
		context.cutterButton[2].setBackgroundResource(R.drawable.cutter_line);
		Kernel.R().setClickStatus(context.cutterButton[2], 0);
		context.cutterButton[3].setBackgroundResource(R.drawable.cutter_line);
		Kernel.R().setClickStatus(context.cutterButton[3], 0);
		context.cutterButton[4].setBackgroundResource(R.drawable.cutter_line);
		Kernel.R().setClickStatus(context.cutterButton[4], 0);
		context.cutterButton[5].setBackgroundResource(R.drawable.cutter_line);
		Kernel.R().setClickStatus(context.cutterButton[5], 0);
	    }
	    break;
	}
	return true;
    }

}
